package com.loveto.service;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.json.JSONException;
import org.json.JSONObject;

import com.loveto.common.JsonUtils;
import com.loveto.common.StringCheck;
import com.loveto.constant.LovetoConstant;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;


public class LoginFindIdActivity extends BaseActivity implements
View.OnClickListener {
	
	// 사용하는 변수들
	private Spinner v_input_email_second_01;
	private Spinner v_input_email_second_02;
	private String member_email;
	private String memberid;
	private AlertDialog.Builder myAlert;
	private ProgressDialog progressDialog;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.loveto_login_find_id);
		
		//변수 초기화
		myAlert = new AlertDialog.Builder(this);
		myAlert.setNeutralButton("확인", null);
		progressDialog = new ProgressDialog(this);
		
		//클릭 리스너 달기
		((RelativeLayout)findViewById(R.id.btn_goto_back)).setOnClickListener(this);
		((RelativeLayout)findViewById(R.id.btn_find_id)).setOnClickListener(this);
		((RelativeLayout)findViewById(R.id.btn_find_password)).setOnClickListener(this);
		
		//아이디 찾기용 메일 입력 뒷부분 스피너 선택 시 처리
		v_input_email_second_01 = (Spinner) findViewById(R.id.input_email_second_01);
		v_input_email_second_01.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				EditText v_input_email_second_direct_01 = (EditText) findViewById(R.id.input_email_second_direct_01);
				String selectedItem = v_input_email_second_01.getSelectedItem().toString();
				if ("직접입력".equals(selectedItem)) {
					v_input_email_second_01.setVisibility(Spinner.GONE); //직접 입력 선택시 스피너 사라짐.
					v_input_email_second_direct_01.setVisibility(EditText.VISIBLE); //직접 입력 에디트 텍스트 보임.
				}
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
			}
		});
		
		//비밀번호 찾기용 메일 입력 뒷부분 스피너 선택 시 처리
		v_input_email_second_02 = (Spinner) findViewById(R.id.input_email_second_02);
		v_input_email_second_02.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				EditText v_input_email_second_direct_02 = (EditText) findViewById(R.id.input_email_second_direct_02);
				String selectedItem = v_input_email_second_02.getSelectedItem().toString();
				if ("직접입력".equals(selectedItem)) {
					v_input_email_second_02.setVisibility(Spinner.GONE); //직접 입력 선택시 스피너 사라짐.
					v_input_email_second_direct_02.setVisibility(EditText.VISIBLE); //직접 입력 에디트 텍스트 보임.
				}
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
			}
		});
	}
	

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
			case R.id.btn_find_id:
				if (isNetworkAvailableAndNotice()) {
					tryFindID();
				}
				break;
			case R.id.btn_find_password:
				if (isNetworkAvailableAndNotice()) {
					tryFindPassword();
				}
				break;
			case R.id.btn_goto_back:
				finish();
				break;
		}
	}
	
	private void tryFindID() {
		//앞부분 확인
		member_email = ((EditText)findViewById(R.id.input_email_first_01)).getText().toString();
		if ("".equals(member_email)) {
			myAlert.setMessage("이메일 주소의 앞부분을 입력해주세요.").show();
			return;
		}
		
		//이메일 뒷부분 입력 여뷰
		String selectedItem = v_input_email_second_01.getSelectedItem().toString();
		String strDirectInputEmail = ((EditText)findViewById(R.id.input_email_second_direct_01)).getText().toString();
		if ("메일선택".equals(selectedItem)) {
			myAlert.setMessage("이메일 주소의 뒷부분을 입력해주세요.").show();
			return;
		}
		if ("직접입력".equals(selectedItem)) {
			if (!StringCheck.checkCorrectEmailSecond(strDirectInputEmail)) {
				myAlert.setMessage("이메일 주소의 뒷부분을 올바르게 입력해주세요.").show();
				return;
			} else {
				member_email += "@";
				member_email += strDirectInputEmail;
			}
		} else {
			member_email += "@";
			member_email += selectedItem;
		}
		
		progressDialog.setMessage("유저정보를 확인하는 중입니다.");
		progressDialog.show();
		Log.d("tag", "tryFindID start");
		try {
			//서버에 정보 보내기
			StringBuffer url = new StringBuffer(LovetoConstant.LOGIN_CHECK_ID_FROM_EMAIL);
			url.append("?member_email=").append(URLEncoder.encode(member_email, "UTF-8"));
			Log.d("tag", "url : " + url.toString());
			String jsonText = JsonUtils.getStringFromUrl(url.toString());
			Log.d("tag", "jsonText : " + jsonText);
			//JSONArray jsonArray = new JSONArray(jsonText);
			JSONObject object = new JSONObject(jsonText);
			String result = object.getString("result");
			String err = object.getString("err");
			Log.d("tag", "result : " + result);
			Log.d("tag", "err : " + err);
			if ("F".equals(result)) {
				if ("unRegistedEmail".equals(err)) {
					myAlert.setMessage("확인 할 수 없는 이메일주소입니다.").show();
				} 
			} else {
				myAlert.setMessage("아이디는 [" + result + "] 입니다." ).show();
			}
		} catch (JSONException e) {
			e.printStackTrace();
			Log.d("tag", "setRoundInfo() error, " + e.getMessage());
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			Log.d("tag", "setRoundInfo() error, " + e.getMessage());
		} finally {
			progressDialog.dismiss();
		}
		Log.d("tag", "tryFindID end");
	}
	
	private void tryFindPassword() {
		
		//아이디 입력 확인
		memberid = ((EditText)findViewById(R.id.input_id)).getText().toString();
		if ("".equals(memberid)) {
			myAlert.setMessage("아이디를 입력해주세요.").show();
			return;
		}
		
		//이메일 앞부분 확인
		member_email = ((EditText)findViewById(R.id.input_email_first_02)).getText().toString();
		if ("".equals(member_email)) {
			myAlert.setMessage("이메일 주소의 앞부분을 입력해주세요.").show();
			return;
		}
		
		//이메일 뒷부분 입력 여뷰
		String selectedItem = v_input_email_second_02.getSelectedItem().toString();
		String strDirectInputEmail = ((EditText)findViewById(R.id.input_email_second_direct_02)).getText().toString();
		if ("메일선택".equals(selectedItem)) {
			myAlert.setMessage("이메일 주소의 뒷부분을 입력해주세요.").show();
			return;
		}
		if ("직접입력".equals(selectedItem)) {
			if (!StringCheck.checkCorrectEmailSecond(strDirectInputEmail)) {
				myAlert.setMessage("이메일 주소의 뒷부분을 올바르게 입력해주세요.").show();
				return;
			} else {
				member_email += "@";
				member_email += strDirectInputEmail;
			}
		} else {
			member_email += "@";
			member_email += selectedItem;
		}
		
		progressDialog.setMessage("유저정보를 확인하는 중입니다.");
		progressDialog.show();
		Log.d("tag", "tryFindPassword start");
		try {
			//서버에 정보 보내기
			StringBuffer url = new StringBuffer(LovetoConstant.LOGIN_CHECK_PASSWORD_FROM_EMAIL);
			url.append("?member_email=").append(URLEncoder.encode(member_email, "UTF-8"));
			url.append("&member_id=").append(URLEncoder.encode(memberid, "UTF-8"));
			Log.d("tag", "url : " + url.toString());
			String jsonText = JsonUtils.getStringFromUrl(url.toString());
			Log.d("tag", "jsonText : " + jsonText);
			//JSONArray jsonArray = new JSONArray(jsonText);
			JSONObject object = new JSONObject(jsonText);
			String result = object.getString("result");
			String err = object.getString("err");
			Log.d("tag", "result : " + result);
			Log.d("tag", "err : " + err);
			if ("F".equals(result)) {
				if ("unRegistedEmail".equals(err)) {
					myAlert.setMessage("확인 할 수 없는 이메일주소입니다.").show();
				} else if ("notMatchID".equals(err)) {
					myAlert.setMessage("아이디와 이메일주소가 다릅니다.").show();
				}
			} else {
				myAlert.setMessage("비밀번호를 이메일주소로 발송하였습니다. 개인사정으로 메일을 확인 할 수 없는경우 nirman@naver.com 으로 문의 부탁드립니다." ).show();
			}
		} catch (JSONException e) {
			e.printStackTrace();
			Log.d("tag", "setRoundInfo() error, " + e.getMessage());
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			Log.d("tag", "setRoundInfo() error, " + e.getMessage());
		} finally {
			progressDialog.dismiss();
		}
		Log.d("tag", "tryFindPassword end");
	}
	
}
